'
\ufeffOBJECTIVE This assignment requires you to develop an application for librarians, allowing them to manage the loan of rear, antique, expensive and tottered books. Using C++, \ufeffthe implementation of your book management system is expected to demonstrate proficient use of advanced object-oriented programming features, such as: inheritance, dynamic memory allocation, friend functions, virtual functions, and polymorphism. Students will implement the advanced object-oriented programming features in an existing development code solution, so as to: allow existing class(es) \ufeffto inherit properties and behaviors; incorporate flexibility in managing program memory; share private data for efficient manipulation; provide a unified interface for operating on different types of data. Consequently, this task will solidify students’ \ufeffgrasp of OOP principles while demonstrating their ability to apply concept to real-world situations. INSTRUCTIONS Read the following scenario, requirements, and considerations, and then implement the required code to achieve the demonstration of all advanced object-oriented programming features (as mentioned in the objective): SCENARIO The Greenstone Library is a general library resource center. The librarians are responsible for providing and maintaining the loan services of books to the Greenstone University students and other members of the library. Students and members are permitted to use the books at the library, but only for a period of six and three hours, respectively. Also, an overnight service is offered to students and members with identification cards for using books without a fee; however, $1,500 \ufeffis incurred each day, for each book, that is not returned on time. Consequently, the librarians need an application with the following menu: Menu Option Function Add Book – \ufeffto add information for a book that can be loaned, including: author(s), \ufefftotal copies available, and title Remove Book – \ufeffto remove an existing book, and all copies thereof Update Book – \ufeffto make changes to information kept for books to be loaned Lend Book – \ufeffSearch Book Availability: to display the copies available for a book in inventory – \ufeffAssign Book: to lend book, whether for overnight or in-library ready Return Book –to compute the total monies due for the loan of an overnight book; otherwise, to update the respective inventory of the returned book Exit –to exit the application, leaving it in a state that its current records will be accessible upon the next opening for use REQUIREMENTS Your program will feature a user-friendly menu-driven interface, offering the mentioned menu options for its user (see SCENARIO). \ufeffThe solution should repeatedly display its menu, and capture and process its user’s inputs until the exit option is chosen. More specifically, implementing friend functions must be done so as to allow for controlled access to class data; file operations must be integrated for data storage, ensuring inventory persistency within each opening and use of the application; while using virtual functions to enable polymorphic behavior within the solution. Also, implementing dynamic memory allocation must be done so as to facilitate the flexibility needed to add and remove book from the inventory. CONSIDERATIONS Your implementation must give appropriate solution and response to potential issues that may arise during the usage of the program, such as: attempting to add a book that already exists, or lending a book for which there is no copy, or removing a book that is on loan, among others. Additionally, if a book is to be loaned from the inventory, your implementation must ensure that adequate copies of the book are available and update the records accordingly. Efficient utilization of dynamic arrays is critical; hence request for allocation and its release must be handled accordingly. Adherence to OOP principles is vital so as to ensure a well-structured and organized codebase.